package com.snj.test2508;

import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class DateUtilsTwo {

    /**
     * 获取当前日期及之前指定天数的日期字符串列表
     *
     * @param days 天数
     * @return 日期字符串列表（格式：yyyy-MM-dd）
     */
    public static List<String> getPreviousDateList(int days) {
        LocalDate currentDate = LocalDate.now();
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
        List<String> dateList = new ArrayList<>();

        for (int i = 0; i <= days; i++) {
            LocalDate date = currentDate.minusDays(i); // 使用 minusDays 获取之前的日期
            String dateStr = date.format(formatter);
            dateList.add(dateStr);
        }

        Collections.sort(dateList); // 按日期升序排序
        return dateList;
    }

    /**
     * 将日期列表按每 3 条数据封装到一个子列表中
     *
     * @param dateList 日期列表
     * @return 封装后的列表（List<List<String>>）
     */
    public static List<List<String>> groupDates(List<String> dateList, int groupSize) {
        List<List<String>> groupedList = new ArrayList<>();
        for (int i = 0; i < dateList.size(); i += groupSize) {
            int end = Math.min(i + groupSize, dateList.size());
            List<String> subList = dateList.subList(i, end);
            groupedList.add(new ArrayList<>(subList));
        }
        return groupedList;
    }

    public static void main(String[] args) {
        // 获取当前日期及之前 29 天的日期列表
        List<String> dateList = getPreviousDateList(29);
        System.out.println("日期列表:");
        for (String dateStr : dateList) {
            System.out.println(dateStr);
        }

        // 将日期列表按每 3 条数据封装到一个子列表中
        List<List<String>> groupedList = groupDates(dateList, 3);

        // 输出分组后的列表
        System.out.println("分组后的日期列表:");
        for (List<String> group : groupedList) {
            System.out.println(group);
        }

        // 输出分组后的列表大小
        System.out.println("分组后的列表大小: " + groupedList.size());
    }
}